package b_this;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class StreamApiDemo {
	
	public class Main {
	    public static void main(String[] args) 
	    {
	      
	        List<Integer> list1 = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList());
	      
	        List<Integer> list2 = list1.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());

	        List<Integer> list3 = list2.stream().map(x -> x * x).collect(Collectors.toList());


	        List<Integer> list4 = list3.stream().sorted().collect(Collectors.toList());

	        int sum = list4.stream().reduce(0, (a, b) -> a + b);
	        System.out.println("5. 使用流操作计算列表元素的总和: " + sum);

	        // 6. 使用流操作限制列表元素数量
	        List<Integer> list5 = list4.stream().limit(5).collect(Collectors.toList());
	        System.out.println("6. 使用流操作限制列表元素数量: " + list5);

	        // 7. 使用流操作跳过列表中的前n个元素
	        List<Integer> list6 = list4.stream().skip(5).collect(Collectors.toList());
	        System.out.println("7. 使用流操作跳过列表中的前n个元素: " + list6);

	        // 8. 使用流操作将两个列表合并为一个列表
	        List<Integer> list7 = Stream.concat(list5.stream(), list6.stream()).collect(Collectors.toList());
	        System.out.println("8. 使用流操作将两个列表合并为一个列表: " + list7);

	        // 9. 使用流操作将数组转换为列表
	        Integer[] array = {1, 2, 3, 4, 5};
	        List<Integer> list8 = Arrays.stream(array).collect(Collectors.toList());
	        System.out.println("9. 使用流操作将数组转换为列表: " + list8);
	    }
	}
}
